package br.com.iswe.gwt.util.client;

import java.util.ArrayList;
import java.util.List;

import com.google.gwt.user.client.EventListener;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Widget;

public class EventListenerList {
	private List listaEventos = new ArrayList();

	public void call(Object sender) {
		//varre a lista de callacks e executa
		for (int i = 0; i < listaEventos.size(); i++) {
			callEvent(listaEventos.get(i), sender);
		}
	}
	
	private void callEvent(Object event, Object sender) {
		if(event instanceof ClickListener){
			((ClickListener)event).onClick((Widget)sender);
		}
		else if(event instanceof Listener){
			((Listener)event).execute(sender);
		}
		else{
			//Tipo de evento nao implementado
			return;
		}
	}

	public void add(EventListener evento){
		listaEventos.add(evento);
	}

	public void add(Listener listener) {
		listaEventos.add(listener);
	}

	public void remove(Listener listener) {
		listaEventos.remove(listener);
	}	
}
